using System;
using System.Diagnostics;

namespace XTCast.Mp3 {
	public class Log {

		static TraceSwitch all = new TraceSwitch("All", "Everything");
		static TraceSwitch local = new TraceSwitch("XTCast.Mp3", "Local DLL");

		static public void Write(Object who,String msg) {
			if (who!=null)
				Trace.Write(who.ToString() + ": " + msg);
			else
				Trace.Write(msg);
		}

		static public void Error(String msg) {
			if (all.TraceError || local.TraceError)
				Write(null,msg);
		}

		static public void Error(Exception ex) {
			if (all.TraceError || local.TraceError)
				Write(null,ex.ToString());
		}

		static public void Error(Object who,String msg) {
			if (all.TraceError || local.TraceError)
				Write(who,msg);
		}

		static public void Warn(String msg) {
			if (all.TraceWarning || local.TraceWarning)
				Write(null,msg);
		}

		static public void Warn(String msg, Object who) {
			if (all.TraceWarning || local.TraceWarning)
				Write(who,msg);
		}

		static public void Info(String msg) {
			if (all.TraceInfo || local.TraceInfo)
				Write(null,msg);
		}

		static public void Info(String msg, Object who) {
			if (all.TraceInfo || local.TraceInfo)
				Write(who,msg);
		}

		static public void Verbose(String msg) {
			if (all.TraceVerbose || local.TraceVerbose)
				Write(null,msg);
		}

		static public void Verbose(String msg, Object who) {
			if (all.TraceVerbose || local.TraceVerbose)
				Write(who,msg);
		}

	}
}